home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / latex209 / contrib / chemstruct / chemstruct.tex < prev   
Text File  |  1989-01-20  |  30KB  |  565 lines

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. %
  3. %   Macropaket STRUCTURE
  4. %   chem. Structurformeln mit TeX
  5. %
  6. %   Autor: Dr. Michael Ramek
  7. %          Institut fuer Physikal. und Theoret. Chemie
  8. %          Technische Universitaet Graz
  9. %
  10. %   Version 1.0
  11. %   November 1987
  12. %
  13. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  14.  
  15. \def\atom#1{\sAve{#1}\adjustAtom}
  16. \def\phantatom#1{\sAve{#1}\phAntbox\adjustAtom}
  17. \def\adjustAtom{\advance\dimen0 by-\dimen6\ifnum\count23=1 \halfbAck\else
  18. \ifnum\count23=2 \fullbAck\fi\fi\raise\dimen1\box0\ifdim\dimen0<\dimen3 %
  19. \dimen3=\dimen0\fi\advance\dimen0 by\dimen6\dimen42=\baselineskip
  20. \dimen52=\count33sp\advance\dimen42 by\dimen1\advance\dimen52 by-\dimen1
  21. \vrule width0em height\dimen42 depth\dimen52\count23=0}
  22.  
  23. \def\epin#1{\setbox0=\hbox{#1}\ifnum\count13=0 \phAntbox\fi
  24. \raise\dimen1\copy0\kern-\wd0\advance\dimen0 by\wd0
  25. \ifdim\dimen0>\dimen2 \dimen2=\dimen0\fi\advance\dimen0 by-\wd0}
  26. \def\wpin#1{\kern-\dimen6\setbox0=\hbox{#1}\ifnum\count13=0 \phAntbox\fi
  27. \kern-\wd0\advance\dimen0 by-\wd0\advance\dimen0 by-\dimen6
  28. \ifdim\dimen0<\dimen3 \dimen3=\dimen0\fi\advance\dimen0 by\dimen6
  29. \advance\dimen0 by\wd0\raise\dimen1\box0\kern\dimen6}
  30. \def\spin#1{\kern-0.5\dimen6\setbox0=\hbox{#1}\ifnum\count13=0 \phAntbox
  31. \fi\kern-0.5\wd0\advance\dimen1 by-\ht0\advance\dimen1 by-\dp0
  32. \advance\dimen1 by-0.2em\raise\dimen1\copy0\advance\dimen1 by\ht0
  33. \advance\dimen1 by\dp0\advance\dimen1 by0.2em\kern-0.5\wd0
  34. \kern0.5\dimen6}
  35. \def\npin#1{\kern-0.5\dimen6\setbox0=\hbox{#1}\ifnum\count13=0 \phAntbox
  36. \fi\kern-0.5\wd0\advance\dimen1 by\ht0\advance\dimen1 by\dp0
  37. \advance\dimen1 by0.2em\raise\dimen1\copy0\advance\dimen1 by-\ht0
  38. \advance\dimen1 by-\dp0\advance\dimen1 by-0.2em\kern-0.5\wd0
  39. \kern0.5\dimen6}
  40.  
  41. \def\sAve#1{\setbox0=\hbox{#1}\dimen5=\ht0\advance\dimen5 by\dp0
  42. \dimen6=\wd0\advance\dimen4 by\wd0\advance\dimen0 by\wd0
  43. \ifdim\dimen0>\dimen2 \dimen2=\dimen0\fi\ifnum\count13=0 \phAntbox\fi}
  44. \def\phAntbox{\dimen12=\ht0\advance\dimen12 by-\dp0
  45. \dimen13=-\ht0\advance\dimen13 by\dimen12
  46. \dimen12=-\dimen12\advance\dimen12 by-\dp0
  47. \setbox0=\hbox{\vrule width\dimen6 height\dimen12 depth\dimen13}}
  48.  
  49. \def\side#1{\ifnum\count11>20 %
  50. \message{Max. nesting of side chains exceeded!}\else
  51. \advance\count11 by1 \count21=\count11\multiply\count21 by10
  52. \count31=\count21\advance\count31 by10
  53. \loop\count41=\count31\advance\count41 by-10
  54. \ifnum\count41>0 \dimen\count31=\dimen\count41\advance\count31 by-1
  55. \repeat\count31=\count21\advance\count31 by20
  56. \loop\count41=\count31\advance\count41 by-10
  57. \ifnum\count41>10 \count\count31=\count\count41\advance\count31 by-10
  58. \repeat\dimen4=0em\count20=0 #1\kern-\dimen4\advance\dimen0 by-\dimen4
  59. \dimen1=\dimen11\count31=4\advance\count21 by1
  60. \loop\count41=\count31\advance\count41 by10
  61. \ifnum\count31<\count21 \dimen\count31=\dimen\count41\advance\count31 by1
  62. \repeat\advance\count21 by20\count31=20\ifnum\count20>0 %
  63. \message{Incomplete aromatic system in side chain ignored!}%
  64. \fi\loop\count41=\count31\advance\count41 by10
  65. \ifnum\count41<\count21 \count\count31=\count\count41
  66. \advance\count31 by10\repeat\advance\count11 by-1\fi}
  67.  
  68.  
  69. \def\fullbAck{\advance\dimen4 by-\dimen6\advance\dimen0 by-\dimen6
  70. \kern-\dimen6}
  71. \def\halfbAck{\advance\dimen4 by-0.5\dimen6\advance\dimen0 by-0.5\dimen6
  72. \kern-0.5\dimen6}
  73. \def\hstrIch{\hbox to 0.784em
  74. {\hss\vrule width0.6em height0.36em depth-0.32em\hss}}
  75. \def\nestrIch{\ifnum\count83=0 \setbox83=\hbox{\count12=0\dimen12=0.65em
  76. \kern0.09em\loop\dimen13=\dimen12\advance\dimen13 by-0.06em
  77. \vrule height\dimen12 depth-\dimen13 width0.012em
  78. \advance\dimen12 by0.0083em\advance\count12 by1 \ifnum\count12<50 \repeat
  79. \kern0.09em}\count83=1\fi\sAve{\copy83}}
  80. \def\nwstrIch{\ifnum\count93=0 \setbox93=\hbox{\count12=0\dimen12=0.65em
  81. \kern0.09em\loop\dimen13=\dimen12\advance\dimen13 by-0.06em
  82. \vrule height\dimen12 depth-\dimen13 width0.012em
  83. \advance\dimen12 by-0.0083em\advance\count12 by1 \ifnum\count12<50 %
  84. \repeat\kern0.09em}\count93=1\fi\sAve{\copy93}}
  85. \def\dotbackslAsh{\setbox1=\hbox{.}\raise0.650em\copy1
  86. \kern-0.15em\raise0.425em\copy1\kern-0.15em\raise0.200em\copy1
  87. \kern-0.15em\lower0.025em\copy1\kern-0.15em\lower0.250em\box1\kern0.08em}
  88. \def\dotslAsh{\setbox1=\hbox{.}\lower0.250em\copy1
  89. \kern-0.15em\lower0.025em\copy1\kern-0.15em\raise0.200em\copy1
  90. \kern-0.15em\raise0.425em\copy1\kern-0.15em\raise0.650em\box1\kern0.08em}
  91. \def\nnepfEil{\ifnum\count13=0 \sAve{\vrule height0em width0.377838em}%
  92. \else\sAve{\kern0.09em\dimen12=0.546em\dimen13=-0.541em\loop
  93. \ifdim\dimen13<0.554em \vrule width0.004em depth\dimen12 height\dimen13
  94. \advance\dimen12 by-0.015em\advance\dimen13 by0.05em\repeat
  95. \loop\ifdim\dimen13>-\dimen12 \vrule width0.004em depth\dimen12 %
  96. height\dimen13\advance\dimen12 by-0.015em\advance\dimen13 by-0.0005em
  97. \repeat}\fi}
  98. \def\enepfEil{\ifnum\count63=0 \setbox63=\hbox{\dimen12=0.086em
  99. \dimen13=-\dimen12\kern0.1em\loop\advance\dimen12 by-0.003em
  100. \advance\dimen13 by0.011em\ifdim\dimen13<0.2em %
  101. \vrule width0.025em depth\dimen12 height\dimen13\repeat
  102. \vrule width0.025em depth\dimen12 height0.1em\kern0.07em}\count63=1 \fi
  103. \sAve{\copy63}}
  104. \def\esepfEil{\ifnum\count43=0 \setbox43=\hbox{\dimen12=-0.086em
  105. \dimen13=-\dimen12\kern0.1em\loop\advance\dimen12 by0.003em
  106. \advance\dimen13 by-0.011em\ifdim\dimen13>-0.2em %
  107. \vrule width0.025em depth-\dimen13 height-\dimen12\repeat
  108. \vrule width0.025em height-\dimen12 depth0.1em\kern0.07em}\count43=1 \fi
  109. \sAve{\copy43}}
  110. \def\ssepfEil{\ifnum\count13=0 \sAve{\vrule height0em width0.377838em}
  111. \else\sAve{\kern0.09em\dimen12=0.546em\dimen13=-0.541em\loop
  112. \ifdim\dimen13<0.554em \vrule width0.004em height\dimen12 depth\dimen13
  113. \advance\dimen12 by-0.015em\advance\dimen13 by0.05em\repeat\loop
  114. \ifdim\dimen13>-\dimen12 \vrule width0.004em height\dimen12 depth\dimen13
  115. \advance\dimen12 by-0.015em\advance\dimen13 by-0.0005em\repeat}\fi}
  116. \def\sswpfEil{\ifnum\count13=0 \sAve{\vrule height0em width0.377838em}
  117. \else\sAve{\dimen12=-0.5em\dimen13=0.53em\loop\ifdim\dimen13<0.554em %
  118. \vrule width0.004em height\dimen12 depth\dimen13
  119. \advance\dimen12 by0.015em\advance\dimen13 by0.0005em\repeat
  120. \loop\ifdim\dimen12<0.546em %
  121. \vrule width0.004em height\dimen12 depth\dimen13
  122. \advance\dimen13 by-0.05em\advance\dimen12 by0.015em\repeat\kern0.05em}%
  123. \fi}
  124. \def\wswpfEil{\ifnum\count53=0 \setbox53=\hbox{\dimen12=0em\kern0.07em
  125. \vrule width0.025em depth0.1em height0em\advance\dimen12 by0.003em
  126. \dimen13=0.2em\loop\ifdim\dimen12>-\dimen13 %
  127. \vrule width0.025em depth\dimen13 height\dimen12
  128. \advance\dimen12 by0.003em\advance\dimen13 by-0.011em\repeat\kern0.1em}%
  129. \count53=1 \fi\sAve{\copy53}}
  130. \def\wnwpfEil{\ifnum\count73=0 \setbox73=\hbox{\dimen12=0em\kern0.07em
  131. \vrule width0.025em depth0em height0.1em\advance\dimen12 by0.003em
  132. \dimen13=0.2em\loop\ifdim\dimen12>-\dimen13 %
  133. \vrule width0.025em depth\dimen12 height\dimen13
  134. \advance\dimen12 by0.003em\advance\dimen13 by-0.011em\repeat\kern0.1em}%
  135. \count73=1 \fi\sAve{\copy73}}
  136. \def\nnwpfEil{\ifnum\count13=0 \sAve{\vrule height0em width0.377838em}
  137. \else\sAve{\dimen12=-0.5em\dimen13=0.53em\loop\ifdim\dimen13<0.554em %
  138. \vrule width0.004em depth\dimen12 height\dimen13
  139. \advance\dimen12 by0.015em\advance\dimen13 by0.0005em\repeat\loop
  140. \ifdim\dimen12<0.546em \vrule width0.004em depth\dimen12 height\dimen13
  141. \advance\dimen12 by0.015em\advance\dimen13 by-0.05em\repeat\kern0.05em}%
  142. \fi}
  143.  
  144. \def\nphantom{\adjUstn\postadjUstn}
  145. \def\nsingle{\adjUstn\raise\dimen1\nstrIch\postadjUstn}
  146. \def\ndouble{\adjUstn\kern0.1em\raise\dimen1\nstrIch\kern-0.2em
  147. \raise\dimen1\nstrIch\kern0.1em\postadjUstn}
  148. \def\ntriple{\adjUstn\kern-0.2em\raise\dimen1\nstrIch\kern0.2em
  149. \raise\dimen1\nstrIch\kern0.2em\raise\dimen1\nstrIch\kern-0.2em
  150. \postadjUstn}
  151. \def\adjUstn{\advance\dimen1 by1.111111\dimen5\halfbAck}
  152. \def\postadjUstn{\advance\dimen1 by1.352em\count23=1}
  153. \def\nstrIch{\ifnum\count13=0 %
  154. \hbox{\vrule width0em height1.19em depth-0.1em}\else
  155. \hbox{\vrule width0.04em height1.19em depth-0.1em}\kern-0.04em\fi}
  156.  
  157. \def\nneabove{\advance\dimen1 by2.05\dimen5\halfbAck\nnepfEil
  158. \raise\dimen1\box0\kern0.17\dimen6\advance\dimen4 by0.17\dimen6
  159. \advance\dimen0 by0.17\dimen6\advance\dimen1 by0.803em\count23=1}
  160. \def\nneevoba{\advance\dimen1 by2.05\dimen5\halfbAck\sswpfEil
  161. \raise\dimen1\box0\kern0.34\dimen6\advance\dimen4 by0.34\dimen6
  162. \advance\dimen0 by0.34\dimen6\advance\dimen1 by0.803em\count23=1}
  163. \def\nnebelow{\advance\dimen1 by2.05\dimen5\halfbAck
  164. \sAve{\setbox1=\hbox{.}\lower0.555em\copy1\kern-0.23em
  165. \lower0.310em\copy1\kern-0.23em\lower0.065em\copy1\kern-0.23em
  166. \raise0.180em\copy1\kern-0.23em\raise0.425em\box1}\raise\dimen1\box0
  167. \kern-0.05\dimen6\advance\dimen4 by-0.05\dimen6
  168. \advance\dimen0 by-0.05\dimen6\advance\dimen1 by0.803em\count23=1}
  169. \def\nnephantom{\halfbAck\sAve{/}\phAntbox\adjUstnne\raise\dimen1\box0
  170. \postadjUstnne}
  171. \def\nnesingle{\halfbAck\sAve{/}\adjUstnne\raise\dimen1\box0
  172. \postadjUstnne}
  173. \def\nnedouble{\halfbAck\sAve{/}\adjUstnne\advance\dimen1 by0.031em
  174. \kern-0.093em\raise\dimen1\copy0\advance\dimen1 by-0.062em\kern-\wd0
  175. \kern0.186em\raise\dimen1\box0\kern-0.093em\advance\dimen1 by0.031em
  176. \postadjUstnne}
  177. \def\nnetriple{\halfbAck\sAve{/}\adjUstnne\advance\dimen1 by0.062em
  178. \kern-0.186em\raise\dimen1\copy0\advance\dimen1 by-0.062em\kern-\wd0
  179. \kern0.186em\raise\dimen1\copy0\advance\dimen1 by-0.062em\kern-\wd0
  180. \kern0.186em\raise\dimen1\box0\kern-0.186em\advance\dimen1 by0.062em
  181. \postadjUstnne}
  182. \def\adjUstnne{\advance\dimen1 by1.111111\dimen5\kern0.37\dimen6
  183. \advance\dimen4 by0.37\dimen6\advance\dimen0 by0.37\dimen6}
  184. \def\postadjUstnne{\advance\dimen1 by\dimen5\kern0.13\dimen6
  185. \advance\dimen4 by0.13\dimen6\advance\dimen0 by0.13\dimen6
  186. \ifdim\dimen0>\dimen2 \dimen2=\dimen0\fi\count23=1}
  187.  
  188. \def\nebelow{\halfbAck\sAve{\dotslAsh}\adjUstnne\raise\dimen1\box0
  189. \postadjUstnne}
  190. \def\nephantom{\nestrIch\phAntbox\raise\dimen1\box0
  191. \advance\dimen1 by1.055em}
  192. \def\nesingle{\nestrIch\raise\dimen1\box0\advance\dimen1 by1.055em}
  193. \def\nedouble{\nestrIch\advance\dimen1 by0.0707em\kern-0.0707em
  194. \raise\dimen1\copy0\kern-\wd0\kern0.1414em\advance\dimen1 by-0.1414em
  195. \raise\dimen1\box0\kern-0.0707em\advance\dimen1 by1.1257em}
  196. \def\netriple{\nestrIch\raise\dimen1\copy0\kern-\wd0\kern-0.1414em
  197. \advance\dimen1 by0.1414em\raise\dimen1\copy0\kern-\wd0\kern0.2828em
  198. \advance\dimen1 by-0.2828em\raise\dimen1\box0\kern-0.1414em
  199. \advance\dimen1 by1.1964em}
  200.  
  201. \def\eneabove{\advance\dimen1 by0.49em\enepfEil\raise\dimen1\box0
  202. \advance\dimen1 by-0.09em}
  203. \def\eneevoba{\advance\dimen1 by0.585em\wswpfEil\raise\dimen1\box0
  204. \advance\dimen1 by-0.185em}
  205. \def\enebelow{\advance\dimen1 by0.51em\sAve{\setbox1=\hbox{.}\kern0.01em
  206. \lower0.125em\copy1\lower0.025em\copy1\raise0.075em\box1}%
  207. \raise\dimen1\box0\advance\dimen1 by-0.11em}
  208.  
  209. \def\ephantom{\sAve{\hstrIch}\phAntbox\raise\dimen1\box0}
  210. \def\esingle{\sAve{\hstrIch}\raise\dimen1\box0}
  211. \def\edouble{\sAve{\hstrIch}\advance\dimen1 by0.1em\raise\dimen1\copy0
  212. \kern-\wd0\advance\dimen1 by-0.2em\raise\dimen1\box0
  213. \advance\dimen1 by0.1em}
  214. \def\etriple{\sAve{\hstrIch}\advance\dimen1 by0.2em\raise\dimen1\copy0
  215. \kern-\wd0\advance\dimen1 by-0.2em\raise\dimen1\copy0
  216. \advance\dimen1 by-0.2em\kern-\wd0\raise\dimen1\box0
  217. \advance\dimen1 by0.2em}
  218.  
  219. \def\eseabove{\advance\dimen1 by0.19em\esepfEil\raise\dimen1\box0
  220. \advance\dimen1 by-0.59em}
  221. \def\eseevoba{\advance\dimen1 by0.09em\wnwpfEil\raise\dimen1\box0
  222. \advance\dimen1 by-0.49em}
  223. \def\esebelow{\advance\dimen1 by0.17em\sAve{\setbox1=\hbox{.}\kern0.01em
  224. \raise0.025em\copy1\lower0.075em\copy1\lower0.175em\box1\kern0.01em}%
  225. \raise\dimen1\box0\advance\dimen1 by-0.57em}
  226.  
  227. \def\sebelow{\ssegenerAl{\dotbackslAsh}}
  228. \def\sephantom{\nwstrIch\phAntbox\advance\dimen1 by-0.628em
  229. \raise\dimen1\box0\advance\dimen1 by-0.428em}
  230. \def\sesingle{\nwstrIch\advance\dimen1 by-0.628em\raise\dimen1\box0
  231. \advance\dimen1 by-0.428em}
  232. \def\sedouble{\nwstrIch\advance\dimen1 by-0.6987em\kern-0.0707em
  233. \raise\dimen1\copy0\kern-\wd0\kern0.1414em\advance\dimen1 by0.1414em
  234. \raise\dimen1\box0\kern-0.0707em\advance\dimen1 by-0.4987em}
  235. \def\setriple{\nwstrIch\advance\dimen1 by-0.628em\raise\dimen1\copy0
  236. \kern-\wd0\kern-0.1414em\advance\dimen1 by-0.1414em\raise\dimen1\copy0
  237. \kern-\wd0\kern0.2828em\advance\dimen1 by0.2828em\raise\dimen1\box0
  238. \kern-0.1414em\advance\dimen1 by-0.5694em}
  239.  
  240. \def\sseabove{\advance\dimen1 by-1.222222\dimen5\halfbAck\ssepfEil
  241. \raise\dimen1\box0\kern-0.06\dimen6\advance\dimen4 by-0.06\dimen6
  242. \advance\dimen0 by-0.06\dimen6\advance\dimen1 by-1.366666em\count23=1}
  243. \def\sseevoba{\advance\dimen1 by-1.222222\dimen5\halfbAck\nnwpfEil
  244. \raise\dimen1\box0\kern0.06\dimen6\advance\dimen4 by0.06\dimen6
  245. \advance\dimen0 by0.06\dimen6\advance\dimen1 by-1.366666em\count23=1}
  246. \def\ssebelow{\advance\dimen1 by-1.222222\dimen5\halfbAck
  247. \sAve{\setbox1=\hbox{.}\raise.455em\copy1\kern-.23em\raise.210em\copy1
  248. \kern-.23em\lower.035em\copy1\kern-.23em\lower.280em\copy1\kern-.23em
  249. \lower.525em\box1}\kern-0.08\dimen6\raise\dimen1\box0\kern-0.17\dimen6
  250. \advance\dimen4 by-0.25\dimen6\advance\dimen0 by-0.25\dimen6
  251. \advance\dimen1 by-1.366666em\count23=1}
  252. \def\ssephantom{\halfbAck\sAve{$\backslash$}\phAntbox\adjUstsse
  253. \raise\dimen1\box0\postadjUstsse}
  254. \def\ssesingle{\ssegenerAl{$\backslash$}}
  255. \def\ssedouble{\halfbAck\sAve{$\backslash$}\adjUstsse
  256. \advance\dimen1 by0.031em\kern0.093em\raise\dimen1\copy0
  257. \advance\dimen1 by-0.062em\kern-\wd0\kern-0.186em\raise\dimen1\box0
  258. \kern0.093em\advance\dimen1 by0.031em\postadjUstsse}
  259. \def\ssetriple{\halfbAck\sAve{$\backslash$}\adjUstsse
  260. \advance\dimen1 by0.062em\kern0.186em\raise\dimen1\copy0
  261. \advance\dimen1 by-0.062em\kern-\wd0\kern-0.186em\raise\dimen1\copy0
  262. \advance\dimen1 by-0.062em\kern-\wd0\kern-0.186em\raise\dimen1\box0
  263. \kern0.186em\advance\dimen1 by0.062em\postadjUstsse}
  264. \def\ssegenerAl#1{\halfbAck\sAve{#1}\adjUstsse\raise\dimen1\box0
  265. \postadjUstsse}
  266. \def\adjUstsse{\kern0.23\dimen6\advance\dimen4 by0.23\dimen6
  267. \advance\dimen0 by0.23\dimen6\advance\dimen1 by-\dimen5}
  268. \def\postadjUstsse{\advance\dimen1 by-1.111111\dimen5\kern0.27\dimen6
  269. \advance\dimen4 by0.27\dimen6\advance\dimen0 by0.27\dimen6
  270. \ifdim\dimen0>\dimen2 \dimen2=\dimen0\fi\count23=1}
  271.  
  272. \def\sphantom{\adjUsts\postadjUsts}
  273. \def\ssingle{\adjUsts\raise\dimen1\sstrIch\postadjUsts}
  274. \def\sdouble{\adjUsts\kern0.1em\raise\dimen1\sstrIch\kern-0.2em
  275. \raise\dimen1\sstrIch\kern0.1em\postadjUsts}
  276. \def\striple{\adjUsts\kern-0.2em\raise\dimen1\sstrIch\kern0.2em
  277. \raise\dimen1\sstrIch\kern0.2em\raise\dimen1\sstrIch\kern-0.2em
  278. \postadjUsts}
  279. \def\adjUsts{\advance\dimen1 by-1.111111\dimen5\halfbAck}
  280. \def\postadjUsts{\advance\dimen1 by-1.352em\count23=1}
  281. \def\sstrIch{\ifnum\count13=0 %
  282. \hbox{\vrule width0em height0.54em depth0.55em}\else
  283. \hbox{\vrule width0.04em height0.54em depth0.55em}\kern-0.04em\fi}
  284.  
  285. \def\sswabove{\advance\dimen1 by-1.222222\dimen5\halfbAck\sswpfEil
  286. \kern-1.25\dimen6\raise\dimen1\box0\kern-0.81\dimen6
  287. \advance\dimen4 by-2.06\dimen6\advance\dimen0 by-2.06\dimen6
  288. \advance\dimen1 by-1.366666em\count23=1}
  289. \def\sswevoba{\advance\dimen1 by-1.222222\dimen5\halfbAck\nnepfEil
  290. \kern-1.1\dimen6\raise\dimen1\box0\kern-0.83\dimen6
  291. \advance\dimen4 by-1.93\dimen6\advance\dimen0 by-1.93\dimen6
  292. \advance\dimen1 by-1.366666em\count23=1}
  293. \def\sswbelow{\advance\dimen1 by-1.222222\dimen5\halfbAck
  294. \sAve{\setbox1=\hbox{.}\lower0.505em\copy1\kern-0.23em\lower0.260em\copy1
  295. \kern-0.23em\lower0.015em\copy1\kern-0.23em\raise0.230em\copy1
  296. \kern-0.23em\raise0.475em\box1}\kern-0.9\dimen6\raise\dimen1\box0
  297. \kern-0.85\dimen6\advance\dimen4 by-1.75\dimen6
  298. \advance\dimen0 by-1.75\dimen6\advance\dimen1 by-1.366666em\count23=1}
  299. \def\sswphantom{\halfbAck\sAve{/}\phAntbox\adjUstssw\raise\dimen1\box0
  300. \postadjUstssw}
  301. \def\sswsingle{\sswgenerAl{/}}
  302. \def\sswdouble{\halfbAck\sAve{/}\adjUstssw\advance\dimen1 by0.031em
  303. \kern-0.093em\raise\dimen1\copy0\advance\dimen1 by-0.062em\kern-\wd0
  304. \kern0.186em\raise\dimen1\box0\kern-0.093em\advance\dimen1 by0.031em
  305. \postadjUstssw}
  306. \def\sswtriple{\halfbAck\sAve{/}\adjUstssw\advance\dimen1 by0.062em
  307. \kern-0.186em\raise\dimen1\copy0\advance\dimen1 by-0.062em\kern-\wd0
  308. \kern0.186em\raise\dimen1\copy0\advance\dimen1 by-0.062em\kern-\wd0
  309. \kern0.186em\raise\dimen1\box0\kern-0.186em\advance\dimen1 by0.062em
  310. \postadjUstssw}
  311. \def\sswgenerAl#1{\halfbAck\sAve{#1}\adjUstssw\raise\dimen1\box0
  312. \postadjUstssw}
  313. \def\adjUstssw{\kern-1.1\dimen6\advance\dimen1 by-\dimen5
  314. \advance\dimen4 by-1.1\dimen6\advance\dimen0 by-1.1\dimen6}
  315. \def\postadjUstssw{\advance\dimen1 by-1.111111\dimen5\kern-1.4\dimen6
  316. \advance\dimen0 by-1.4\dimen6\advance\dimen4 by-1.4\dimen6\count23=1}
  317.  
  318. \def\swbelow{\sswgenerAl{\dotslAsh}}
  319. \def\swphantom{\fullbAck\nestrIch\phAntbox\advance\dimen1 by-1.054em
  320. \fullbAck\raise\dimen1\box0\fullbAck\count23=2}
  321. \def\swsingle{\fullbAck\nestrIch\advance\dimen1 by-1.054em\fullbAck
  322. \raise\dimen1\box0\fullbAck\count23=2}
  323. \def\swdouble{\fullbAck\nestrIch\advance\dimen1 by-1.1247em\fullbAck
  324. \kern0.0707em\raise\dimen1\copy0\kern-\wd0\kern-0.1414em
  325. \advance\dimen1 by0.1414em\raise\dimen1\box0\kern0.0707em
  326. \fullbAck\advance\dimen1 by-0.0707em\count23=2}
  327. \def\swtriple{\fullbAck\nestrIch\advance\dimen1 by-1.054em\fullbAck
  328. \raise\dimen1\copy0\kern-\wd0\kern-0.1414em\advance\dimen1 by0.1414em
  329. \raise\dimen1\copy0\kern-\wd0\kern0.2828em\advance\dimen1 by-0.2828em
  330. \raise\dimen1\box0\kern-0.1414em\fullbAck\advance\dimen1 by0.1414em
  331. \count23=2}
  332.  
  333. \def\wswabove{\advance\dimen1 by0.19em\fullbAck\wswpfEil\fullbAck
  334. \raise\dimen1\box0\advance\dimen1 by-0.59em\fullbAck\count23=2}
  335. \def\wswevoba{\advance\dimen1 by0.09em\fullbAck\enepfEil\fullbAck
  336. \raise\dimen1\box0\advance\dimen1 by-0.49em\fullbAck\count23=2}
  337. \def\wswbelow{\advance\dimen1 by0.12em\fullbAck\sAve{\setbox1=\hbox{.}%
  338. \kern0.01em\lower0.125em\copy1\lower0.025em\copy1\raise0.075em\box1}%
  339. \fullbAck\raise\dimen1\box0\advance\dimen1 by-0.52em\fullbAck\count23=2}
  340.  
  341. \def\wphantom{\adjUstw\advance\dimen0 by-\dimen6
  342. \advance\dimen4 by-\dimen6\count23=2}
  343. \def\wsingle{\adjUstw\raise\dimen1\box0\fullbAck\count23=2}
  344. \def\wdouble{\adjUstw\advance\dimen1 by0.1em
  345. \raise\dimen1\copy0\kern-\wd0\advance\dimen1 by-0.2em\raise\dimen1\box0
  346. \advance\dimen1 by0.1em\fullbAck\count23=2}
  347. \def\wtriple{\adjUstw\advance\dimen1 by0.2em\raise\dimen1\copy0\kern-\wd0
  348. \advance\dimen1 by-0.2em\raise\dimen1\copy0\kern-\wd0
  349. \advance\dimen1 by-0.2em\raise\dimen1\box0\advance\dimen1 by0.2em
  350. \fullbAck\count23=2}
  351. \def\adjUstw{\fullbAck\sAve{\hstrIch}\fullbAck
  352. \ifdim\dimen0<\dimen3 \dimen3=\dimen0\fi}
  353.  
  354. \def\wnwabove{\advance\dimen1 by0.49em\fullbAck\wnwpfEil\fullbAck
  355. \raise\dimen1\box0\advance\dimen1 by-0.09em\fullbAck\count23=2}
  356. \def\wnwevoba{\advance\dimen1 by0.59em\fullbAck\esepfEil\fullbAck
  357. \raise\dimen1\box0\advance\dimen1 by-0.19em\fullbAck\count23=2}
  358. \def\wnwbelow{\advance\dimen1 by0.56em\fullbAck\sAve{\setbox1=\hbox{.}%
  359. \kern0.01em\raise0.025em\copy1\lower0.075em\copy1\lower0.175em\box1
  360. \kern0.01em}\fullbAck\raise\dimen1\box0\advance\dimen1 by-0.16em
  361. \fullbAck\count23=2}
  362.  
  363. \def\nwbelow{\nnwgenerAl{\dotbackslAsh}}
  364. \def\nwphantom{\fullbAck\nwstrIch\phAntbox\fullbAck
  365. \advance\dimen1 by0.42em\raise\dimen1\box0\fullbAck
  366. \advance\dimen1 by0.635em\count23=2}
  367. \def\nwsingle{\fullbAck\nwstrIch\fullbAck\advance\dimen1 by0.42em
  368. \raise\dimen1\box0\fullbAck\advance\dimen1 by0.635em\count23=2}
  369. \def\nwdouble{\fullbAck\nwstrIch\fullbAck\kern-0.0707em
  370. \advance\dimen1 by0.3493em\raise\dimen1\copy0\kern-\wd0\kern0.1414em
  371. \advance\dimen1 by0.1414em\raise\dimen1\box0\kern-0.0707em
  372. \advance\dimen1 by0.5643em\fullbAck\count23=2}
  373. \def\nwtriple{\fullbAck\nwstrIch\fullbAck\advance\dimen1 by0.42em
  374. \raise\dimen1\copy0\kern-\wd0\kern-0.1414em\advance\dimen1 by-0.1414em
  375. \raise\dimen1\copy0\kern-\wd0\kern0.2828em\advance\dimen1 by0.2828em
  376. \raise\dimen1\box0\kern-0.1414em\fullbAck\advance\dimen1 by0.4936em
  377. \count23=2}
  378.  
  379. \def\nnwabove{\advance\dimen1 by2.05\dimen5\halfbAck\nnwpfEil
  380. \kern-1.14\dimen6\raise\dimen1\box0\advance\dimen1 by0.803em
  381. \kern-1.20\dimen6\advance\dimen4 by-2.34\dimen6
  382. \advance\dimen0 by-2.34\dimen6\count23=1}
  383. \def\nnwevoba{\advance\dimen1 by2.05\dimen5\halfbAck\ssepfEil
  384. \kern-1.06\dimen6\raise\dimen1\box0\advance\dimen1 by0.803em
  385. \kern-1.11\dimen6\advance\dimen4 by-2.17\dimen6
  386. \advance\dimen0 by-2.17\dimen6\count23=1}
  387. \def\nnwbelow{\advance\dimen1 by2.05\dimen5\halfbAck
  388. \sAve{\setbox1=\hbox{.}\raise0.435em\copy1\kern-0.23em\raise0.190em\copy1
  389. \kern-0.23em\lower0.075em\copy1\kern-0.23em\lower0.3em\copy1
  390. \kern-0.23em\lower0.545em\box1}\kern-0.9\dimen6\raise\dimen1\box0
  391. \kern-1.05\dimen6\advance\dimen4 by-1.95\dimen6
  392. \advance\dimen0 by-1.95\dimen6\advance\dimen1 by0.803em\count23=1}
  393. \def\nnwphantom{\halfbAck\sAve{$\backslash$}\phAntbox\adjUstnnw
  394. \raise\dimen1\box0\postadjUstnnw}
  395. \def\nnwsingle{\nnwgenerAl{$\backslash$}}
  396. \def\nnwdouble{\halfbAck\sAve{$\backslash$}\adjUstnnw
  397. \advance\dimen1 by0.031em\kern0.093em\raise\dimen1\copy0
  398. \advance\dimen1 by-0.062em\kern-\wd0\kern-0.186em\raise\dimen1\box0
  399. \kern0.093em\advance\dimen1 by0.031em\postadjUstnnw}
  400. \def\nnwtriple{\halfbAck\sAve{$\backslash$}\adjUstnnw
  401. \advance\dimen1 by0.062em\kern0.186em\raise\dimen1\copy0
  402. \advance\dimen1 by-0.062em\kern-\wd0\kern-0.186em\raise\dimen1\copy0
  403. \advance\dimen1 by-0.062em\kern-\wd0\kern-0.186em\raise\dimen1\box0
  404. \kern0.186em\advance\dimen1 by0.062em\postadjUstnnw}
  405. \def\nnwgenerAl#1{\halfbAck\sAve{#1}\adjUstnnw\raise\dimen1\box0
  406. \postadjUstnnw}
  407. \def\adjUstnnw{\advance\dimen1 by1.111111\dimen5\kern-1.15\dimen6
  408. \advance\dimen4 by-1.15\dimen6\advance\dimen0 by-1.15\dimen6}
  409. \def\postadjUstnnw{\kern-1.35\dimen6\advance\dimen4 by-1.35\dimen6
  410. \advance\dimen0 by-1.35\dimen6\advance\dimen1 by\dimen5\count23=1}
  411.  
  412. \def\nmostaromatatom#1{\atom{#1}\dimen8=\dimen1\advance\dimen8 by-0.4em
  413. \aromAtincr}
  414. \def\smostaromatatom#1{\atom{#1}\dimen10=\dimen1
  415. \advance\dimen10 by\dimen5\advance\dimen10 by0.3em\advance\count20 by1
  416. \aromAtincr}
  417. \def\wmostaromatatom#1{\atom{#1}\dimen7=\dimen0\advance\count20 by2
  418. \advance\dimen7 by0.36em\aromAtincr}
  419. \def\emostaromatatom#1{\atom{#1}\dimen9=\dimen0\advance\dimen9 by-\dimen6
  420. \advance\count20 by3 \advance\dimen9 by-0.24em\aromAtincr}
  421. \def\aromAtincr{\advance\count20 by1\count42=\count20\ifnum\count20=10 %
  422. \aromAtsymbol\fi}
  423. \def\wUrzel{% Here \count42=sqrt(\count52) is calculated by a recursion
  424. % formula. Since \wUrzel is called from inside a loop, and TeX cannot
  425. % handle loops within loops, this has to be done the hard way.
  426. \count42=\count52\divide\count42 by4\count62=\count52
  427. \divide\count62 by\count42\advance\count62 by\count42
  428. \count72=\count62\divide\count72 by2\advance\count72 by5
  429. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  430. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  431. \count72=\count62\divide\count72 by2\advance\count72 by5
  432. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  433. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  434. \count72=\count62\divide\count72 by2\advance\count72 by5
  435. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  436. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  437. \count72=\count62\divide\count72 by2\advance\count72 by5
  438. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  439. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  440. \count72=\count62\divide\count72 by2\advance\count72 by5
  441. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  442. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  443. \count72=\count62\divide\count72 by2\advance\count72 by5
  444. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  445. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  446. \count72=\count62\divide\count72 by2\advance\count72 by5
  447. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  448. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  449. \count72=\count62\divide\count72 by2\advance\count72 by5
  450. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  451. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  452. \count72=\count62\divide\count72 by2\advance\count72 by5
  453. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  454. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  455. \count72=\count62\divide\count72 by2\advance\count72 by5
  456. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  457. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  458. \count72=\count62\divide\count72 by2\advance\count72 by5
  459. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  460. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  461. \count72=\count62\divide\count72 by2\advance\count72 by5
  462. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  463. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  464. \count72=\count62\divide\count72 by2\advance\count72 by5
  465. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  466. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  467. \count72=\count62\divide\count72 by2\advance\count72 by5
  468. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  469. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  470. \count72=\count62\divide\count72 by2\advance\count72 by5
  471. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  472. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  473. \count72=\count62\divide\count72 by2\advance\count72 by5
  474. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  475. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  476. \count72=\count62\divide\count72 by2\advance\count72 by5
  477. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  478. \count62=\count52\divide\count62 by\count42\advance\count62 by\count42
  479. \count72=\count62\divide\count72 by2\advance\count72 by5
  480. \ifnum\count42>\count72 \count42=\count62\divide\count42 by2
  481. \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
  482. \def\aromAtsymbol{\count20=0\ifnum\count13>0 \advance\dimen8 by-\dimen10
  483. \dimen8=0.5\dimen8\advance\dimen7 by-\dimen9\dimen7=-0.5\dimen7
  484. \setbox1=\hbox{\vrule width0.04em height0.04em}\dimen22=0.4\wd1
  485. \count32=7100\count22=\dimen22\divide\count22 by60\dimen22=0.0001\dimen7
  486. \dimen23=0.0001\dimen8\setbox0=\hbox{\loop\advance\count32 by-\count22
  487. \count62=\count32\multiply\count62 by\count32\count52=100000000
  488. \advance\count52 by-\count62\wUrzel\kern\count42\dimen22
  489. \lower\count32\dimen23\copy1\kern-\wd1\raise\count32\dimen23\copy1
  490. \kern-\wd1\count72=-\count42\kern\count72\dimen22\kern\count72\dimen22
  491. \lower\count32\dimen23\copy1\kern-\wd1\raise\count32\dimen23\copy1
  492. \kern-\wd1\kern\count42\dimen22\kern\count32\dimen22
  493. \lower\count42\dimen23\copy1\kern-\wd1\raise\count42\dimen23\copy1
  494. \kern-\wd1\count72=-\count32\kern\count72\dimen22\kern\count72\dimen22
  495. \lower\count42\dimen23\copy1\kern-\wd1\raise\count42\dimen23\copy1
  496. \kern-\wd1\kern\count32\dimen22\ifnum\count32>\count22 \repeat
  497. \kern-10000\dimen22\copy1\kern-\wd1\kern20000\dimen22\copy1\kern-\wd1}%
  498. \advance\dimen9 by-\dimen0\kern\dimen9\kern-10000\dimen22
  499. \dimen13=\dimen10\advance\dimen13 by\dimen8\raise\dimen13\box0
  500. \kern-\dimen9\fi}
  501.  
  502. \def\firstbicycloatom#1{\atom{#1}\ifnum\count13>0 \ifnum\count20>0 %
  503. \count20=0\message{Bicyclo definition ignored!}\else\dimen7=\dimen0
  504. \advance\dimen7 by-0.5\dimen6\count20=100\dimen8=\dimen1
  505. \advance\dimen8 by0.4\dimen5\dimen9=\dimen6\fi\fi}
  506. \def\secondbicycloatom#1{\atom{#1}\ifnum\count13>0 \ifnum\count20=100 %
  507. \dimen12=\dimen0\advance\dimen12 by-0.5\dimen6
  508. \dimen13=\dimen1\advance\dimen13 by0.4\dimen5
  509. \ifdim\dimen9<\dimen6 \dimen9=\dimen6\fi\ifdim\dimen9<\dimen5 %
  510. \dimen9=\dimen5\fi\setbox1=\hbox{\vrule width0.04em height0.04em}%
  511. \kern-0.5\dimen6\dimen22=\dimen7\advance\dimen22 by-\dimen12
  512. \divide\dimen22 by10000\dimen23=\dimen8\advance\dimen23 by-\dimen13
  513. \divide\dimen23 by10000\count42=\dimen22\multiply\count42 by\dimen22
  514. \count52=\dimen23\multiply\count52 by\dimen23\advance\count52 by\count42
  515. \wUrzel\divide\dimen9 by100\multiply\dimen9 by85\count32=\dimen9
  516. \divide\count32 by\count42\count52=10000\advance\count52 by-\count32
  517. \count72=\wd1%\multiply\count72 by4\divide\count72 by10
  518. \divide\count72 by2
  519. \divide\count72 by\count42\loop\dimen32=0em
  520. \advance\dimen32 by\count32\dimen22\dimen33=\dimen13
  521. \advance\dimen33 by\count32\dimen23\kern\dimen32\raise\dimen33\copy1
  522. \kern-\wd1\kern-\dimen32\advance\count32 by\count72
  523. \ifnum\count32<\count52 \repeat\kern0.5\dimen6\else
  524. \message{Bicyclo definition ignored!}\fi\fi\count20=0}
  525.  
  526. \def\nopositioncheck{\count13=1}
  527.  
  528. \def\structure#1{\hbox{\begingroup\rm\catcode`\ =9\catcode`\^^M=9
  529. \dimen252=\fontdimen2\tenrm\fontdimen2\tenrm=0pt
  530. \dimen253=\fontdimen3\tenrm\fontdimen3\tenrm=0pt
  531. \dimen254=\fontdimen4\tenrm\fontdimen4\tenrm=0pt
  532. \dimen255=\fontdimen7\tenrm\fontdimen7\tenrm=0pt
  533. \count11=0%  side chain nesting
  534. \count20=0%  definition counter of aromatatoms and bicycloatoms
  535. \count13=0%  disable printing
  536. \count23=0%  fullback/halfback/noback flag
  537. \dimen0=\baselineskip\advance\dimen0 by-0.7em
  538. \advance\baselineskip by-0.3em
  539. \count33=\dimen0 % amount of depth to be added
  540. \count43=0%  marker for eseabove- and wnwevoba-bonds
  541. \count53=0%  marker for wswabove- and eneevoba-bonds
  542. \count63=0%  marker for eneabove- and wswevoba-bonds
  543. \count73=0%  marker for wnwabove- and eseevoba-bonds
  544. \count83=0%  marker for in-plane ne- and swbonds
  545. \count93=0%  marker for in-plane nw- and sebonds
  546. \dimen0=0em% actual horizontal position
  547. \dimen1=0em% actual vertical position
  548. \dimen2=0em% maximum horizontal position
  549. \dimen3=0em% minimum horizontal position
  550. \dimen4=0em% horizontal side chain correction
  551. \dimen5=0em% last height + depth
  552. \dimen6=0em% last width
  553. \dimen7=0em%
  554. \dimen8=0em%
  555. \dimen9=0em%
  556. \dimen10=0em%
  557. #1\ifnum\count13=0 \kern-\dimen0\kern-\dimen3\dimen0=0em\dimen1=0em
  558. \dimen2=0em\count13=1 #1\fi\kern-\dimen0\kern\dimen2\ifnum\count20>0 %
  559. \message{Incomplete aromatic system ignored!}\fi
  560. \advance\baselineskip by0.3em\fontdimen2\tenrm=\dimen252 %
  561. \fontdimen3\tenrm=\dimen253 \fontdimen4\tenrm=\dimen254 %
  562. \fontdimen7\tenrm=\dimen255 \endgroup}}
  563.  
  564. \endinput
  565.